#include<iostream>
using namespace std;

class Base
{
public:
	virtual ~Base() {}
public:
	void Func2() {cout << "Base::Func2" << endl;}
	virtual void Func1() {cout << "Base::Func1" << endl;}

};

class DrivedA : public Base
{
public:
	DrivedA() {}

public:
	void Func2() {cout << "DrivedA::Func2" << endl;}
	virtual void Func1() {cout << "DrivedA::Func1" << endl;}
};

class DrivedB : virtual public Base
{
public:
	virtual void Func2() {cout << "DrivedB::Func2" << endl;}

};

void classSizeTest()
{
	cout << "Size of Base: " << sizeof(Base) << endl;
	cout << "Size of DrivedA: " << sizeof(DrivedA) << endl;

	Base *bs = new DrivedA();

	//bs->Func1();
	//bs->Func2();

	cout << "Size of DrivedB: " << sizeof(DrivedB) << endl;
}
